package com.sikaryofficial.information.message.product;

import com.sikaryofficial.information.message.body.InformationMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.Message;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;

/**
 * 消息生产
 */
@Component
public class ProductProcess {

    @Autowired
    private MQProduct mqProduct;

    /**
     * 发送延迟消息
     *
     *    // MessageStoreConfig.java
     *       private String messageDelayLevel = "1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h";//发消息时，设置delayLevel等级即可：msg.setDelayLevel(level)。level有以下三种情况：
     *       level == 0，消息为非延迟消息
     *       1<=level<=maxLevel，消息延迟特定时间，例如level==1，延迟1s
     *       level > maxLevel，则level== maxLevel，例如level==20，延迟2h
     *
     * @param message 消息
     * @return 是否发送成功
     */
    public boolean sendDelayMessage(InformationMessage message) {
        // 创建 Spring Message 对象
        Message<InformationMessage> springMessage = MessageBuilder.withPayload(message)
                .build();
        // 发送消息
        return mqProduct.syncOutput().send(springMessage);
    }
}
